package com.ruoyi.merchant.task;


import com.ruoyi.merchant.service.IMerchantRatingService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 商家评分定时任务
 */
@Slf4j
@Component
public class MerchantRatingTask {

    @Autowired
    private IMerchantRatingService merchantRatingService;

    /**
     * 每天凌晨2点更新所有商家评分
     * cron表达式：秒 分 时 日 月 周
     * 0 0 2 * * ? 表示每天凌晨2点执行
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void updateAllMerchantRating() {
        log.info("========================================");
        log.info("商家评分定时更新任务开始执行");
        log.info("========================================");
        
        try {
            int updateCount = merchantRatingService.batchUpdateAllMerchantRating();
            
            log.info("========================================");
            log.info("商家评分定时更新任务执行成功，共更新 {} 个商家", updateCount);
            log.info("========================================");
        } catch (Exception e) {
            log.error("========================================");
            log.error("商家评分定时更新任务执行失败", e);
            log.error("========================================");
        }
    }

    /**
     * 测试用：每5分钟执行一次（可选，用于开发测试）
     * 上线前请注释或删除此方法
     */
//    @Scheduled(cron = "0 */5 * * * ?")
    public void updateAllMerchantRatingTest() {
        log.info("[测试] 开始执行商家评分更新");
        try {
            int updateCount = merchantRatingService.batchUpdateAllMerchantRating();
            log.info("[测试] 商家评分更新完成，共更新 {} 个商家", updateCount);
        } catch (Exception e) {
            log.error("[测试] 商家评分更新失败", e);
        }
    }
}